﻿using System;

namespace Hx.ADSyncPlatform.ActiveDirectory.Enums
{
    /// <summary>
    /// 用户控制
    /// <see cref="https://support.microsoft.com/zh-cn/help/305144/how-to-use-useraccountcontrol-to-manipulate-user-account-properties"/>
    /// </summary>
    [Flags]
    public enum UserAccountControlValue
    {
        /// <summary>
        /// 将运行登录脚本.
        /// </summary>
        SCRIPT = 1,

        /// <summary>
        /// 禁用用户帐户。
        /// </summary>
        ACCOUNTDISABLE = 2,

        /// <summary>
        /// 主文件夹是必需的。
        /// </summary>
        HOMEDIR_REQUIRED = 8,

        /// <summary>
        /// 锁定
        /// </summary>
        LOCKOUT = 16,

        /// <summary>
        /// 无需密码。
        /// </summary>
        PASSWD_NOTREQD = 32,

        /// <summary>
        /// 用户无法更改密码。
        /// </summary>
        PASSWD_CANT_CHANGE = 64,

        /// <summary>
        /// 允许发送加密密码
        /// </summary>
        ENCRYPTED_TEXT_PWD_ALLOWED = 128,

        /// <summary>
        /// 这是主帐户位于其他域中的用户的帐户。
        /// </summary>
        //TEMP_DUPLICATE_ACCOUNT = 256,

        /// <summary>
        /// 这是代表​​典型用户的默认帐户类型。
        /// </summary>
        NORMAL_ACCOUNT = 512,

        /// <summary>
        /// 这是一个信任某个信任其他域的系统域的帐户的许可。
        /// </summary>
        //INTERDOMAIN_TRUST_ACCOUNT = 2048,

        /// <summary>
        /// 这是运行Microsoft Windows NT 4.0 Workstation，Microsoft Windows NT 4.0 Server，Microsoft Windows 2000 Professional或Windows 2000 Server的计算机的计算机帐户，并且是此域的成员。
        /// </summary>
        WORKSTATION_TRUST_ACCOUNT = 4096,

        /// <summary>
        /// 这是域控制器的计算机帐户，该域控制器是此域的成员。
        /// </summary>
        //SERVER_TRUST_ACCOUNT = 8192,

        /// <summary>
        /// 表示密码，该密码永远不会在帐户上过期
        /// </summary>
        DONT_EXPIRE_PASSWORD = 65536,

        /// <summary>
        /// 这是一个MNS登录帐户。
        /// </summary>
        MNS_LOGON_ACCOUNT = 131072,

        /// <summary>
        /// 设置此标志后，它会强制用户使用智能卡登录。
        /// </summary>
        SMARTCARD_REQUIRED = 262144,

        /// <summary>
        /// 设置此标志后，Kerberos委派会信任运行服务的服务帐户（用户或计算机帐户）。任何此类服务都可以模拟请求服务的客户端。要为Kerberos委派启用服务，必须在服务帐户的userAccountControl属性上设置此标志。
        /// </summary>
        TRUSTED_FOR_DELEGATION = 524288,

        /// <summary>
        /// 设置此标志后，即使将服务帐户设置为受信任的Kerberos委派，也不会将用户的安全上下文委派给服务。
        /// </summary>
        NOT_DELEGATED = 1048576,

        /// <summary>
        /// （Windows 2000 / Windows Server 2003）将此主体限制为仅使用密钥的数据加密标准（DES）加密类型。
        /// </summary>
        USE_DES_KEY_ONLY = 2097152,

        /// <summary>
        /// （Windows 2000 / Windows Server 2003）此帐户不需要Kerberos预身份验证即可登录。
        /// </summary>
        DONT_REQ_PREAUTH = 4194304,

        /// <summary>
        /// （Windows 2000 / Windows Server 2003）用户的密码已过期。
        /// </summary>
        PASSWORD_EXPIRED = 8388608,

        /// <summary>
        /// （Windows 2000 / Windows Server 2003）该帐户已启用委派。这是一个安全敏感的设置。启用此选项的帐户应严格控制。此设置允许在帐户下运行的服务采用客户端的身份，并以该用户身份对网络上的其他远程服务器进行身份验证。 
        /// </summary>
        TRUSTED_TO_AUTH_FOR_DELEGATION = 16777216,

        /// <summary>
        /// （Windows Server 2008 / Windows Server 2008 R2）该帐户是只读域控制器（RODC）。这是一个安全敏感的设置。从RODC中删除此设置会危及该服务器的安全性。
        /// </summary>
        //PARTIAL_SECRETS_ACCOUNT = 67108864
    }
}
